#include<bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn=1e5+10;
// 全部都可以有 , 分隔多个变量
// 然后就是区分数组和 非数组 [ ] 来区分
// 数组和变量不会混合定义
// 数组: 根据第一个字符确定类型, 根据 , 确定 数组个数, 根据 后面的 [ ] 之间的内容确定大小
// 变量: 根据第一个字符确定类型, 根据 , 确定个数
// 字符串 根据 "" 确定 长度根据 , 确定个数
int n;
void solve(){
	int ans=0;
	string tmp, s;
	getline(cin, tmp);
	n=stoi(tmp);
	for(int i=1;i<=n;i++){
		getline(cin, s);
		// 先区分是不是数组
		if(s.find("[")==s.npos){ // 不是数组
			int cnt=count(s.begin(), s.end(), ','); // 计算某个字符出现的次数
			cnt++;
			// 区分 那种类型的
			if(s[0]=='S'){ // 字符串
				int pos=s.find("\"");
				while (pos!=s.npos) {
					int newPos=s.find("\"", pos+1); // 找到一对中的另一个了
					ans+=newPos-pos-1;
					pos=s.find("\"", newPos+1);
				}
			} else if (s[0]=='i') { // int
				ans+=4*cnt;
			} else { // long
				ans+=8*cnt;
			}
		} else { // 是数组
			int cntt=0;
			int pos=s.find("]");
			int leftPos=s.find("[", pos+1);
			while(leftPos!=s.npos){
				int rightPos=s.find("]", leftPos+1);
				string val=s.substr(leftPos+1, (rightPos-leftPos-1));
				cntt+=stoi(val);
				leftPos = s.find("[", rightPos+1);
			}
			
			if(s[0]=='i'){ // int 数组
				ans+=cntt*4;
			} else { // long 数组
				ans+=cntt*8;				
			}
		}
	}
	
	if(ans>=(1024*1024*1024)){
		cout<<ans/(1024*1024*1024)<<"GB";
		ans%=(1024*1024*1024);
	}
	
	if(ans>=1024*1024){
		cout<<ans/(1024*1024)<<"MB";
		ans%=(1024*1024);
	}
	if(ans>=1024){
		cout<<ans/(1024)<<"KB";
		ans%=(1024);
	}
	
	if(ans>0){
		cout<<ans<<"B";
	}
	
	cout<<'\n';
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0),cout.tie(0);
	solve();
	return 0;
}
